<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
/* 数组当中 为 迭代函数 的 实例方法
  forEach(fn)：对数组中的每一项运行给定函数。这个方法没有返回值。
  filter(fn)：对数组中的每一项运行给定函数，返回该函数会返回true 的项组成的数组。
  map(fn)：对数组中的每一项运行给定函数，返回每次函数调用的结果组成的数组。

  every(fn)：对数组中的每一项运行给定函数，如果该函数对每一项都返回true，则返回true。
  some(fn)：对数组中的每一项运行给定函数，如果该函数对任一项返回true，则返回true.
*/


/* 迭代函数的特性：
  1. arr.forEach(fn)  ->  本质是：依次遍历 arr 的每个 item ，将 item 作为 value 
      传入 fn
  2. 迭代函数的 fn 都有 三个 形参，其{本质}为 ，迭代/回调的时候，执行函数： fn(item, itemIndex, arr)
  
  3. arr.forEach(函数表达式)
*/

var arr = ['a', 'c', 5, 9];


/* 
  // 案例：函数的形参值，靠 对应 实参的位置 来确定。
  var fn = function(index, array, value) {
    fn('a', 0, arr);
    console.log(value, index, array); 
    // 迭代的第一次，输出的结果：  Array(4),  'a',   0
      // value ->  'a'
      // index -> 0
      // array -> arr
  }
  arr.forEach(fn);
*/


/* 
  for (var i = 0; i < arr.length; i++) {
    console.log(arr[i] + 'Yo');
  }

  // 将上面的 for 循环 用 迭代函数 forEach 改写

  arr.forEach(function(item, i, arr) {
    console.log(item + 'Yo');
  });
*/







</script>